home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib13.dsk / FUNCTION PLOTTER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  3KB  |  79 lines

  1. 10  REM  **********************
  2. 20  REM  * FUNCTION PLOTTER   *
  3. 30  REM  * BY C. B. WINKLER   *
  4. 40  REM  * COPYRIGHT (C) 1983 *
  5. 50  REM  * BY MICRO-SPARC INC *
  6. 60  REM  * LINCOLN, MA. 01773 *
  7. 70  REM  **********************
  8. 80  DIM Z(101),W(101)
  9. 90  TEXT : HOME 
  10. 100 D$ = "<CTRL-D>"
  11. 110  PRINT "ENTER ANY VALID APPLESOFT EQUATION": PRINT "OF THE FORM:   Y="; CHR$(91);"AN EXPRESSION IN X"; CHR$(93): PRINT 
  12. 120  INPUT "EQUATION: ";EQ$
  13. 130 RP = 160:NCL = 1:LN(1) = 250:LN$(1) = EQ$
  14. 140  REM  MODIFY LINE 250
  15. 150  GOTO 60000
  16. 160  REM  CONTINUE
  17. 170  INPUT "RANGE OF X (FIRST,LAST):";MIN,MAX
  18. 180  HGR : HOME : HCOLOR= 3: VTAB 24: PRINT EQ$
  19. 190 XG = 279/(MAX -MIN):X0 =  -XG *MIN
  20. 200 XS = (MAX -MIN)/100
  21. 210 MN = 1E37:MX =  -1E37
  22. 220  FOR I = 0 TO 100
  23. 230 W(I) = MIN +XS *I
  24. 240 X = W(I)
  25. 250  REM  MAKE SPACE...........................................................................................................................................................................................................................
  26. 260 Y =  -Y
  27. 270  IF Y >MX  THEN MX = Y
  28. 280  IF Y <MN  THEN MN = Y
  29. 290 Z(I) = Y
  30. 300  NEXT I
  31. 310 ZG = 159/(MX -MN):Z0 =  -ZG *MN
  32. 320  HPLOT W(0) *XG +X0,Z(0) *ZG +Z0
  33. 330  FOR I = 1 TO 100
  34. 340  HPLOT  TO W(I) *XG +X0,Z(I) *ZG +Z0
  35. 350  NEXT I
  36. 360  PRINT "PRESS ANY KEY TO CONTINUE ";: GET DUMMY$
  37. 370  GOTO 90
  38. 380  REM  APPEND THE SELF-MODIFIER
  39. 60000  REM  **********************
  40. 60002  REM  * SELF-MODIFIER      *
  41. 60004  REM  * BY C. B. WINKLER   *
  42. 60006  REM  * COPYRIGHT (C) 1983 *
  43. 60008  REM  * BY MICRO-SPARC INC *
  44. 60010  REM  * LINCOLN, MA. 01773 *
  45. 60012  REM  **********************
  46. 60020  REM  CREATE EXEC FILE "MODIFIER"
  47. 60030  PRINT D$;"OPEN MODIFIER"
  48. 60040  PRINT D$;"DELETE MODIFIER"
  49. 60050  PRINT D$;"OPEN MODIFIER"
  50. 60060  PRINT D$;"WRITE MODIFIER"
  51. 60070  REM  WRITE NEW APPLESOFT LINES TO MODIFIER
  52. 60080  FOR I = 1 TO NCL
  53. 60090  PRINT LN(I);LN$(I)
  54. 60100  NEXT I
  55. 60110  REM  WRITE RETURNING GOTO AND RESTARTING RUN TO MODIFIER
  56. 60120  PRINT "60380 GOTO ";RP
  57. 60130  PRINT "RUN 60270"
  58. 60140  REM  DONE BUILDING MODIFIER 
  59. 60150  PRINT D$;"CLOSE MODIFIER"
  60. 60160  REM  MOVE VARIABLE POINTERS TO SECURE MEMORY LOCATIONS
  61. 60170  FOR I = 0 TO 5: POKE 250 +I, PEEK(105 +I): NEXT I
  62. 60180  POKE 238, PEEK(111): POKE 239, PEEK(112)
  63. 60190  REM  ISSUE EXEC COMMAND
  64. 60200  PRINT D$;"EXEC MODIFIER"
  65. 60210  REM  SAVE DOS OUTPUT VECTOR AND TURN OFF OUTPUT
  66. 60240  REM  ISSUE END TO START EXECUTION OF MODIFIER
  67. 60250  END 
  68. 60260  REM  **********************************************************
  69. 60270  REM  RESTART PROGRAM
  70. 60280  REM  RECOVER ALL POINTERS BEFORE REFERENCING ANY VARIABLE NAMES
  71. 60290  POKE 105, PEEK(250): POKE 106, PEEK(251)
  72. 60300  POKE 107, PEEK(252): POKE 108, PEEK(253)
  73. 60310  POKE 109, PEEK(254): POKE 110, PEEK(255)
  74. 60320  POKE 111, PEEK(238): POKE 112, PEEK(239)
  75. 60330  REM  ALL PREVIOUSLY DEFINED VARIABLES NOW AVAILABLE
  76. 60340  REM  RECONNECT OUTPUT
  77. 60360  PRINT D$;"DELETE MODIFIER"
  78. 60370  REM  RETURN TO MAIN PROGRAM
  79. 60380  REM  SPACE FOR GOTO RP